// 82.删除排序链表中的重复元素2
package Leetcode_Second_Brush;

public class Solution082 {
    public ListNode deleteDuplicates(ListNode head) {
        // 最终的结果链表
        ListNode node = new ListNode();
        ListNode result = node;
        // 遍历整个head链表
        while (head != null) {
            // 判断当前节点是否是单个元素
            // 情况一：如果当前节点的下一个节点为空
            // 情况二：当前节点的值不等于下一节点的值
            if (head.next == null || head.next.val != head.val) {
                ListNode next = head.next;
                node.next = head;
                head.next = null;
                head = next;
                node = node.next;
            // 如果当前节点的元素是重复的，则跳过等于该值的所有节点
            } else {
                int val = head.val;
                while (head != null && head.val == val)
                    head = head.next;
            }
        }
        return result.next;
    }
}
